package com.szly.phm.admin.async;


import com.szly.phm.common.entity.po.SysLog;
import com.szly.phm.common.mapper.SysLogMapper;
import com.szly.phm.admin.utils.IPUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;

@Component
public class LogAsync {

    @Autowired
    private SysLogMapper sysLogMapper;



    @Autowired
    private HttpServletRequest request;

    /**
     * 异步添加登录日志
     *
     * @Async 失效的情况：
     * 1.异步方法使用static修饰
     * 2.异步类没有使用@Component注解（或其他注解导致Spring无法扫描到异步类
     * 3.异步方法不能与被调用的异步方法在同一个类中
     * 4.类中需要使用@Autowired或@Resource等注解自动注入，不能手动new对象
     * 5.如果使用SpringBoot框架必须在启动类中增加@EnableAsync注解
     * @auther: chengjiang
     */


    /**
     * 异步添加操作日志
     * @author chengjiang
     * @date 2021/4/13
     */
    @Async
    public void addOperationLog(SysLog log) {
        log.setIpAddress(IPUtils.getRemoteAddr(request));
        log.setCreateDateTime(new Date());
        sysLogMapper.insert(log);
    }
}
